package br.com.viaembratel.entity.prepago;

import java.io.Serializable;

import java.util.Collection;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@NamedQueries({
  @NamedQuery(name = "Categoria.findAll", query = "select o from Categoria o")
})
@Table(schema = "pre_pago")
public class Categoria implements Serializable {
    private static final long serialVersionUID = 1L;
    @Column(nullable = false, length = 30)
    private String descricao;
    @Id
    @Column(name="ID_CATEGORIA", nullable = false)
    private Long idCategoria;
    @ManyToOne
    @JoinColumn(name = "ID_CATEGORIA_PAI")
    private Categoria categoria;
    @OneToMany(mappedBy = "categoria")
    private Collection<Categoria> categoriaCollection;

    public Categoria() {
    }

    public Categoria(String descricao, Long idCategoria, Categoria categoria) {
        this.descricao = descricao;
        this.idCategoria = idCategoria;
        this.categoria = categoria;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public Long getIdCategoria() {
        return idCategoria;
    }

    public void setIdCategoria(Long idCategoria) {
        this.idCategoria = idCategoria;
    }


    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }

    public Collection<Categoria> getCategoriaCollection() {
        return categoriaCollection;
    }

    public void setCategoriaCollection(Collection<Categoria> categoriaCollection) {
        this.categoriaCollection = categoriaCollection;
    }

    public Categoria addCategoria(Categoria categoria) {
        getCategoriaCollection().add(categoria);
        categoria.setCategoria(this);
        return categoria;
    }

    public Categoria removeCategoria(Categoria categoria) {
        getCategoriaCollection().remove(categoria);
        categoria.setCategoria(null);
        return categoria;
    }
}
